Thermal solution

Thermal Instructions

Due to the relatively high performance of the M1 and L1 development boards, the bottom core module generates significant heat during extended high‑load operation. Installing a heatsink can enhance heat dissipation and help ensure stable device operation.

Thermal solution mounting scheme

  1. Attach the heatsink with adhesive backing to the primary heat source.

../../_images/image_BWSmbfae5o5vkbxiIf4cph3On7b.webp
  1. Use the mechanical mounting holes around the development board to secure the heatsink. For the exact mounting hole positions, refer to the dimension drawing below.

../../_images/image_WxBbbnQGIowmEoxVwPPcNgynnKc.webp

Note:For better heat dissipation, it is recommended to fill the gap between the heatsink and the heat source with a thermal pad or thermal grease.

Passive Cooling Example

The following section introduces a simple passive heatsink for developers’ design reference. This heatsink is mounted using the mechanical mounting holes on the development board.

Note:This component is a custom part from Quectel and is not a standard off‑the‑shelf item.

../../_images/image_MYU3bFudOopWS9xwDzfc9oLpnqf.webp
  1. Attach the thermal pad to the rear module.

../../_images/image_HwyWbt9PAoQ99RxeAmZciZcgnje.webp
  1. Align the heatsink with the mounting holes on the development board.

../../_images/image_F8dVbzhHSordlUxH9R6cmIPmn8e.webp
  1. Use 4 M2.5×14 nuts and 4 M2.5×3 brass standoffs to secure the assembly and complete the installation.

../../_images/image_KWMFbhX6EoxLfrxN4TlctkFVnPd.webp
  1. The completed installation is illustrated below.

../../_images/image_H8cTbWs1Woqjv1xqtS5cpZxonie.webp

Note: This heatsink is intended solely as a design reference demo. Whether it meets the heat dissipation and cost requirements of the actual application must be evaluated by developers based on their specific application scenarios and requirements.

Heatsink reference model:

📎 Quectel_Pi_M1&L1_Heatsink_Demo_V1.0.STEP

Active Cooling Example

Fan without temperature control

Active cooling requires powering the fan. The 5V pin on the 40‑pin header can be used to supply power to a 5V fan.

../../_images/image_Nx9zbk2Hbo0LJzx50rTcZTnJnff.webp

Secure the fan to the rear heatsink. Refer to the following:

../../_images/image_LQL1byZF5oryiExwZv4cwneZn1d.webp

Note:This solution does not allow fan speed control. The fan will spin as soon as the development board is powered on.

Developers may also choose products of this type that integrate a heatsink with an adhesive backing.

../../_images/image_ASoRbraW0o2nfpxBpoKcO0iYnXg.webp

Temperature‑controlled fan test

On the 40‑pin header of the development board, PIN33 provides PWM functionality, which can be used for fan speed control.

2‑Pin Fixed‑Speed Fan Control

  1. For a 2‑wire fan without a speed control interface, the following reference circuit can be used in conjunction with the PWM pin to achieve fan speed control.

../../_images/image_VeV0bqnaxowENzxOkQacSaNfntb.webp
  1. Electrical connection diagram

../../_images/image_Hqv3bakJiouUeyxDfLucZ9D8nWe.webp

3‑Pin Variable Speed Fan Control

Background process monitors/sys/class/thermal/thermal_zone*

and cyclically reads the temperatures of the multiple CPU cores, takes the highest value, and configures the fan PWM duty cycle based on that highest temperature.


CPU temperature


Duty cycle / 255


<30℃


0


30~40℃


64


40~50℃


128


50~60℃


192


>60℃


255

Hardware Installation and Wiring Diagram

This test uses a Cool fan. Connect it to the corresponding pins on the M1/L1 40‑pin header as shown in the diagram below.

Fan Pin

M1/L1 Development Board Pin (40‑PIN)

Red wire (Power positive)

PIN2

Black wire (Power negative)

PIN6

Blue wire (PWM)

PIN33

../../_images/image_FuzVbKWFho48oExUyfPcpe0qnOg.webp

Actual installation is as follows:

image
image

Note: Heatsinks from different manufacturers may have varying compatibility with this product. Developers should evaluate accordingly.

Software Testing Procedure

  1. By default, the fan function is disabled. After power‑on, enter the following commands in adb to check the status of the fan service.

adb shell
40pin-ctrl fan status # View the current status of the fan service (bound if not enabled, enable if active)
40pin-ctrl fan enable # Enable the fan service; after enabling, you can check whether the status shows "enable"
40pin-ctrl fan disable # Disable the fan service (only needed to stop the test)
  1. Enter the following in the first terminal.

40pin-ctrl fan enable
40pin-ctrl fan status
#M1
watch -n 1 'PWM=/sys/bus/platform/devices/1c40000.qcom,spmi:qcom,pm6125@1:qcom,pwms@b300/pwm/pwmchip0/pwm0; p=$(cat "$PWM/period"); d=$(cat "$PWM/duty_cycle"); echo $(( (d * 255 + p / 2) / p ))'
#L1
watch -n 1 'PWM=/sys/bus/platform/devices/1c40000.qcom,spmi:qcom,pm2250@1:qcom,pwms@be00/pwm/pwmchip2/pwm0; p=$(cat "$PWM/period"); d=$(cat "$PWM/duty_cycle"); echo $(( (d * 255 + p / 2) / p ))'

Check whether the current temperature and PWM duty cycle match.

  1. Open a second terminal and perform the heating (temperature‑raising) operation.

for i in 1 2 3 4; do
  yes > /dev/null &
done
  1. If the temperature rise in step 3 is insufficient, you can increase the load.

for i in $(seq 1 $(nproc)); do
  yes > /dev/null &
done

Check whether the temperatures and fan PWM duty cycles in the two terminals match the values in the table.

../../_images/image_FYoPbZh9SovZxdxsmUZcHTqdngd.webp
  1. After the test ends, stop the load.

killall yes